home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Leser 15 / Amiga Plus Leser CD 15.iso / Tools / Hardware / BlizKick / SaveROM.ASM < prev    next >
Encoding:
Assembly Source File  |  2002-03-13  |  1.4 KB  |  83 lines

  1. ; FILE: Source:SaveROM.ASM          REV: 4 --- Kickstart ROM saver.
  2. ; History
  3. ;  3      Now requires only KS 1.0.
  4. ;  4      Made to allocate 1/4 ROM size buffer and copy + write the ROM in
  5. ;         4 chunks. Fixes problems with bad device drivers & MMU mapped rom.
  6. ;
  7.  
  8.     include    "exec/types.i"
  9.     include    "exec/memory.i"
  10.     include    "dos/dos.i"
  11.  
  12.     include    "exec/exec_lib.i"
  13.     include    "dos/dos_lib.i"
  14.  
  15. Main    move.l    (4).w,a6
  16.     clr.l    -1(a0,d0.l)
  17.     lea    $01000000,a3
  18.     move.l    a0,a5
  19.     move.l    (-$14,a3),d3
  20.     moveq    #RETURN_FAIL,d7
  21.     sub.l    d3,a3
  22.     lsr.l    #2,d3
  23.     beq.b    .exit
  24.     tst.w    d3
  25.     bne.b    .exit
  26.     move.l    d3,d0
  27.     moveq    #MEMF_PUBLIC,d1
  28.     jsr    (_LVOAllocMem,a6)
  29.     tst.l    d0
  30.     beq.b    .exit
  31.     move.l    d0,a4
  32.  
  33.     lea    (.dosname,pc),a1
  34.     jsr    (_LVOOldOpenLibrary,a6)
  35.     tst.l    d0
  36.     beq.b    .freemem
  37.     move.l    d0,a6
  38.     moveq    #RETURN_ERROR,d7
  39.     move.l    a5,d1
  40.     move.l    #MODE_NEWFILE,d2
  41.     jsr    (_LVOOpen,a6)
  42.     move.l    d0,d6
  43.     beq.b    .closedos
  44.  
  45.     moveq    #4,d5
  46. .copyloop
  47.     move.l    a4,a0
  48.     move.l    d3,d0
  49. .copy    move.l    (a3)+,(a0)+
  50.     move.l    (a3)+,(a0)+
  51.     subq.l    #8,d0
  52.     bne.b    .copy
  53.  
  54.     move.l    d6,d1
  55.     move.l    a4,d2
  56.     ; d3 = size
  57.     jsr    (_LVOWrite,a6)
  58.     cmp.l    d0,d3
  59.     bne.b    .error
  60.     subq.l    #1,d5
  61.     bne.b    .copyloop
  62.  
  63.     moveq    #RETURN_OK,d7
  64.  
  65. .error    move.l    d6,d1
  66.     jsr    (_LVOClose,a6)
  67.     tst.l    d7
  68.     beq.b    .closedos
  69.     move.l    a5,d1
  70.     jsr    (_LVODeleteFile,a6)
  71. .closedos
  72.     move.l    a6,a1
  73.     move.l    (4).w,a6
  74.     jsr    (_LVOCloseLibrary,a6)
  75. .freemem
  76.     move.l    a4,a1
  77.     move.l    d3,d0
  78.     jsr    (_LVOFreeMem,a6)
  79. .exit    move.l    d7,d0
  80.     rts
  81.  
  82. .dosname    dc.b    'dos.library',0
  83.